package java_thinking.unit_17;

/**
 * @Desc:   必看:https://blog.csdn.net/l540675759/article/details/62893335
 *      1.Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样，蛋壳；
 *      2.Deque 继承自 Queue,直接实现了它的有 LinkedList, ArrayDeque, ConcurrentLinkedDeque 等
 *      3.Deque 支持容量受限的双端队列，也支持大小不固定的。一般双端队列大小不确定；
 *      4.Deque 接口定义了一些从头部和尾部访问元素的方法。比如分别在头部、尾部进行插入、删除、获取元素。和 Queue类似，每个操作
 *        都有两种方法，一种在异常情况下直接抛出异常奔溃，另一种则不会抛异常，而是返回特殊的值，比如 false, null
 *
 *      5.Deque 的实现类：
 *          一般场景：
 *              LinkedList 大小可变的链表双端队列，允许元素为 null
 *              ArrayDeque 大小可变的数组双端队列，不允许 null
 *          并发场景：
 *              LinkedBlockingDeque 如果队列为空时，获取操作将会阻塞，直到有元素添加
 *      6.Deque 与 工作密取：
 *          在并发编程 中，双端队列 Deque 还用于 “工作密取” 模式，在 生产者-消费者 模式中，所有消费者都从一个工作队列中取元素，
 *          一般使用阻塞队列实现；而在 工作密取 模式中，每个消费者有其单独的工作队列，如果它完成了自己双端队列中的全部工作，那
 *          么它就可以从其他消费者的双端队列末尾秘密地获取工作。工作密取 模式 对比传统的 生产者-消费者 模式，更为灵活，因为多
 *          个线程不会因为在同一个工作队列中抢占内容发生竞争。在大多数时候，它们只是访问自己的双端队列。即使需要访问另一个队列
 *          时，也是从 队列的尾部获取工作，降低了队列上的竞争程度；
 * @author: cww
 * @DateTime: 2019/4/29 15:31
 */

public class DequeTheory {
}
